<?php
/**
 * 导航模型
 * 
 * ============================================================================
 * 版权所有: (c) 2009-2011，<UEShop Inc>，并保留所有权利。
 * 网站地址: http://www.ueshop.cn
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用；
 * 不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 *
 * @author      cmpan
 * @copyright   Copyright (c) 2009-2010 UEShop Inc. (http://www.ueshop.cn)
 * @license     http://www.ueshop.cn/1_0.txt
 */
class NavModel extends UE_Model {
    public $table  = 'ue_nav';
	public $key    = 'nav_id';
	
	/**
	 * 添加导航菜单
	 *
	 * @param array $nav 导航菜单属性
	 * @return int|bool
	 */
	public function add($nav) {
	    if(empty($nav['nav_name'])) {
	    	$this->setErr('导航名称不能为空');
	    	return false;
	    }
	    
	    // 实体化“"”，“'”，“<”，“>”
		$nav = array_map('htmlspecialchars', $nav);
		
		empty($nav['nav_order']) && $nav['nav_order'] = 9999;		
	    return parent::add($nav);	    	    
	}
	
	/**
	 * 更新导航
	 *
	 * @param array $nav 导航数据
	 * @return int|bool
	 */
	public function update($nav) {
		if (empty($this->id)) {
			$this->setErr('错误的参数');
	    	return false;
		}
		
		if(empty($nav['nav_name'])) {
	    	$this->setErr('菜单名称不能为空');
	    	return false;
	    }
	    
	    // 实体化“"”，“'”，“<”，“>”
	    $nav = array_map('htmlspecialchars', $nav);		
	    return parent::update($nav);
	}
	
	/**
	 * 获取已启用的栏目
	 *
	 * @return unknown
	 */
	public static function getEnabledNav() {
		$cache = UE_Cache::factory();
		if ($nav = $cache->get('nav')) {
			return $nav;
		}
		
		$sql = "SELECT * FROM ue_nav WHERE nav_enabled = 1 ORDER BY nav_order ASC";
		$rs = UE_DB::factory()->getAll($sql);
		
		$t = new UE_Tree();
		$t->set($rs, 'nav_id', 'nav_parent_id');
		$nav = $t->get();
		
		$cache->set('nav', $nav);
		
		return $nav;
	}
	
	public function delete() {
		if (!$this->check()) {
			return false;
		}
		
		$sql = "SELECT * FROM ue_nav";
		$rs = UE_DB::factory()->getAll($sql);
		
		$t = new UE_Tree();
		$t->set($rs, 'nav_id', 'nav_parent_id');
		$nav = $t->get();
		
		if (count($nav[$this->id]['chile']) > 1) {
			$this->setErr('该导航还有自导航，不能删除');			
			return false;
		}
		
		return parent::delete();
	}
}